1
Passer des threads aux instances de programme
AI023Lesson 4
00:00

Dans Triton, l'unité fondamentale d'exécution passe du thread scalaire CUDA à la instance de programme. Cela représente une abstraction d'un bloc de threads GPU, où une seule instance traite simultanément un bloc vectorisé d'éléments.

1. L'identité de l'instance de programme

Chaque unité d'exécution récupère son identité via pid = tl.program_id(axes=0). Pensez à un chariot élévateur de stockage (l'instance de programme) qui ramasse un palet (le bloc) de 128 boîtes, comparé à un ouvrier unique (thread CUDA) qui ramasse une seule boîte.

2. Triton vs. tenseurs PyTorch

Comprendre le fossé sémantique est essentiel pour la gestion de la mémoire :

  • Tenseur PyTorch : Un objet Python côté hôte enveloppant le stockage en VRAM, les pas et les métadonnées.
  • Tenseur Triton : Un objet au niveau du compilateur représentant des valeurs ou des pointeurs résidant dans les registres ou la SRAM.
Vue PyTorch
Objet Python pointant vers une mémoire globale contiguë.
Vue Triton
Un bloc 2D/1D de données à l'intérieur des registres du compilateur.

3. Nature SPMD

Triton suit un modèle Programme unique, données multiples (SPMD) de flux. Chaque instance de programme exécute le même code exactement code. La divergence n'apparaît que lorsque la logique utilise le pid pour calculer des décalages de mémoire spécifiques.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>